/*
 * 百度在线网络技术（北京）有限公司拥有本软件版权2021并保留所有权利。
 * Copyright 2021, Baidu.com,Inc 2:Baidu Online Network Technology (Beijing) Co.,Ltd,
 * All rights reserved.
 */

package com.azdebugit.autona.test.jso;

import com.alibaba.fastjson.PropertyNamingStrategy;
import com.alibaba.fastjson.parser.Feature;
import com.alibaba.fastjson.serializer.SerializeFilter;
import com.alibaba.fastjson.serializer.SerializerFeature;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author domin
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE })
public @interface JSONType {
 
    String[] orders() default {};      //字段序列化顺序
 
    String[] includes() default {};    //包含的序列化字段
    String[] ignores() default {};     //不包含的序列化字段
 
    Class<?> serializer() default Void.class;     //自定义序列化类
    Class<?> deserializer() default Void.class;   //自定义反序列化类
 
    Class<? extends SerializeFilter>[] serialzeFilters() default {};
 
 
    SerializerFeature[] serialzeFeatures() default {};
    Feature[] parseFeatures() default {};
    
    boolean asm() default true;
    boolean alphabetic() default true;    
    boolean serializeEnumAsJavaBean() default false;
    
    String typeName() default "";
    String typeKey() default "";
    
    Class<?>[] seeAlso() default{};
    Class<?> mappingTo() default Void.class;   
    Class<?> builder() default Void.class;
 
    PropertyNamingStrategy naming() default PropertyNamingStrategy.CamelCase;
 
    //Class<? extends ParserConfig.AutoTypeCheckHandler> autoTypeCheckHandler() default ParserConfig.AutoTypeCheckHandler.class;
}